import _ from 'lodash'
import { nanoid } from 'nanoid'
import { createDB } from '../db/index.js'
const db = await createDB('users')
await db.read()

// 如果没有文件则以 fileName 创建文件
if(!db.data) {

}

const userData = db.chain.get('data')

export const userSchema = {
    name: { type: 'string', require: true},
    password: { type: 'string', require: true, select: false }
}

// 模拟使用schema
function useUserSchema(user) {
    const keys = []
    _.mapKeys(userSchema, (value, key) => {
        if(value.select === false) keys.push(key)
    })
    return _.omit(user, keys)
}

// 模型
export const User = {
    // 查询所有
    async find() {
        return {
            data: userData.map(o => useUserSchema(o)).value()
        }
    },
    // 查询唯一
    async findOne(data) {
        const res = userData.find(data).value()
        return res
    },
    // 是否正确
    async userExist(data) {
        const res = userData.find(data).value()
        return res ? true : false
    },
    // 保存(注册)
    async save(params) {
        const id = nanoid()
        const data = _.assign(params, {id: id})
        userData.value().push(data)
        await db.write()
        return {
            data: {
                name: data.name
            }
        }
    },
    async update() {
        
    }
}